package com.wsc.springbootmultidevdemo.springMsg;

import com.wsc.springbootmultidevdemo.pojo.Dog;
import com.wsc.springbootmultidevdemo.pojo.User;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Map;

/**
 * 自定义消息适配器类
 */
public class MessageDelegate {

    /**
     * 自定义消息接收类，默认方法名必须是 handleMessage
     * @param message
     */
    /*public void handleMessage(byte[] message){
        String msg = new String(message);
        System.err.println("----- 默认方法名接收到的信息："+msg);
    }*/

    /**
     * 自定义方法名
     * @param message
     */
    public void msgReceiver(byte[] message){
        String msg = new String(message);
        System.err.println("----- 自定义方法名接收到的信息："+msg);
    }

    /**
     * 自定义方法名
     * @param message string 类型的 parameter
     */
    public void msgReceiver(String message){
        System.err.println("----- param是String的自定义方法名接收到的信息："+message);
    }

    /**
     * 通过队列名匹配方法
     * @param bytes 消息字节数组
     */
    public void topicQ(byte[] bytes){
        String msg = new String(bytes);
        System.err.println("队列名称是 topic_queue 发送来的消息:"+msg);
    }

    /**
     * 通过队列名匹配方法
     * @param bytes 消息字节数组
     */
    public void topicQ1(byte[] bytes ){
        String msg = new String(bytes);
        System.err.println("队列名称是 topic_queue1 发送来的消息:"+msg);
    }

    /**
     * Json 格式转换发送来的消息
     * @param jsonMsg
     */
    public void jsonReceiver(Map jsonMsg){
        System.err.println("json 转换方法 ："+jsonMsg);
    }

    /**
     * 接收 converter 将 Broker 中的消息转换成 User 类型之后的方法
     * @param user Message 类转换成 User
     */
    public void userReceiver(User user){
        System.err.println("json 直接转化成 User 格式 ：姓名："+user.getName()+"，" +
                "年龄："+user.getAge()+"，" +
                "性别："+user.getSex());
    }

    /**
     * 接收 converter 将 Broker 中的消息转换成 Dog 类型之后的方法
     * @param dog Message 类转换成 Dog
     */
    public void userReceiver(Dog dog){
        System.err.println("json 直接转化成 Dog 格式 ：姓名："+dog.getName()+"，" +
                "年龄："+dog.getAge()+"，" +
                "品种："+dog.getVariety());
    }

    /**
     * 文件接收模式
     */
    public void msgReceive(File file) throws IOException {
        System.err.println("文件接收方式接收到的文件名："+ file.getName());
    }

}
